#!/bin/bash
# 启动 Flink Agents 集群模式（流式处理）✨ 新增
# 用法：
#   ./start-flink-cluster-streaming.sh
#   或 make start-flink-cluster-streaming

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"

echo "🔄 切换到 Flink Agents 集群模式（流式处理）..."
echo "=================================================="

# 切换到项目根目录
cd "$PROJECT_ROOT"

# 停止其他处理器
echo "🛑 停止其他处理器..."
docker-compose -f docker/docker-compose.yml stop event-processor flink-agents-processor flink-cluster-processor 2>/dev/null || true

# 启动 Flink Agents 集群模式（流式）
echo "🚀 启动 Flink Agents (集群模式 - 流式处理)..."
docker-compose -f docker/docker-compose.yml --env-file .env --profile flink-cluster-streaming up -d

# 等待服务启动
echo "⏳ 等待服务启动（5秒）..."
sleep 5

# 检查服务状态
echo ""
echo "📊 服务状态："
echo "=================================================="
docker ps --filter "name=browse-etl" --format "table {{.Names}}\t{{.Status}}" | grep -E "flink|postgres|localstack"

echo ""
echo "=================================================="
echo "✅ Flink Agents 集群模式已启动（流式处理）"
echo ""
# 记录当前模式
echo "flink-cluster-streaming" > /tmp/browse-etl-mode

echo ""
echo "📝 流式模式说明："
echo "   - 持续消费模式：实时处理 Kinesis 新数据（LATEST 模式）"
echo "   - 读取策略：LATEST（只消费启动后的新数据）"
echo "   - 技术方案：Table API → DataStream（官方推荐）"
echo "   - 适合：生产环境、实时用户行为分析、需要秒级延迟"
echo "   - 特点：分布式、容错、Checkpoint"
echo ""
echo "💡 使用建议："
echo "   - 服务会持续运行，不会自动退出"
echo "   - 只处理启动后产生的新数据"
echo "   - 如需处理历史数据，请先运行 'make start-flink-cluster'"
echo ""
echo "📝 快捷命令："
echo "   部署Lambda: make deploy"
echo "   运行测试: make test"
echo "   查看 Flink UI: make flink-ui (http://localhost:8081)"
echo "   查看日志: make logs-flink-cluster-streaming"
echo "   停止服务: make stop"
echo "=================================================="
